// src/utils/message.ts
import {ElMessage, MessageHandler} from 'element-plus';

export enum ShowType {
    Success = 0,
    success = 0,
    Warning = 1,
    warning = 1,
    Info = 2,
    info = 2,
    Error = 3,
    error = 3,
}

// 消息队列，用于管理当前显示的消息
const messageQueue: MessageHandler[] = [];

/**
 * 显示消息，并限制最多显示 5 条。
 * @param showType 消息类型
 * @param msg 消息内容
 * @param showClose 是否显示关闭按钮
 * @param maxCount  最大显示数量
 */
export function showMsg(
    showType: ShowType,
    msg: string,
    showClose: boolean = true,
    maxCount: number = 5,
) {
    // 创建消息配置
    const options = {message: msg, showClose, duration: 3000};

    // 创建消息实例
    const newMessage = createMessage(showType, options);

    // 将新消息添加到队列
    messageQueue.push(newMessage);

    // 如果消息数超过 5 条，移除并关闭最早的一条
    if (messageQueue.length > maxCount) {
        const oldestMessage = messageQueue.shift(); // 移除最早的消息
        oldestMessage?.close(); // 手动关闭该消息
    }
}

/**
 * 根据消息类型创建消息。
 */
function createMessage(
    showType: ShowType,
    options: { message: string; showClose: boolean; duration: number }
): MessageHandler {
    switch (showType) {
        case ShowType.Success:
            return ElMessage.success(options);
        case ShowType.Warning:
            return ElMessage.warning(options);
        case ShowType.Info:
            return ElMessage.info(options);
        case ShowType.Error:
            return ElMessage.error(options);
        default:
            return ElMessage.info(options);
    }
}